﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.ModelBinding;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.Practices.Unity;
using Triunfadores.BusinessEntities;
using Triunfadores.BusinessLogic.Service;

namespace Triunfadores.Web.Prestamos
{
    public partial class EvaluarPrestamo : System.Web.UI.Page
    {
        #region DECLARACION DE DEPENDENCIAS
        [Dependency]
        public IPrestamoService PrestamoService { get; set; }

        [Dependency]
        public IClienteService ClienteService { get; set; }

        [Dependency]
        public ISolicitudPrestamoService SolicitudPrestamoService { get; set; }
        #endregion

        //variable global para sacar el id del avalador
        private static IEnumerable<Prestamo> ListPrestamos ;
        //private static decimal totalAvaldor;

        protected void Page_Load(object sender, EventArgs e)
        {
            //cliente
            var idSolicitud = Int32.Parse(Request.QueryString["idSolicitud"]);
            var solicitudPrestamo = SolicitudPrestamoService.ObtenerSolicitudPrestamoPorId(idSolicitud);

            lblFecha.Text = DateTime.Now.ToShortDateString();
            lblIdCliente.Text = solicitudPrestamo.IdCliente.ToString();

            #region Datos del cliente
            lblNombreCliente.Text = solicitudPrestamo.Cliente.Nombres + " " + solicitudPrestamo.Cliente.Apellidos;
            lblDniCliente.Text = solicitudPrestamo.Cliente.Dni;
            lblTelefonoCliente.Text = solicitudPrestamo.Cliente.Telefono;
            lblDireccionCliente.Text = solicitudPrestamo.Cliente.Direccion;
            lblEmailCliente.Text = solicitudPrestamo.Cliente.Email;
            #endregion

            #region Datos de la solicitud
            lblCantidad.Text = solicitudPrestamo.Cantidad.ToString();
            lblFechaSolicitada.Text = solicitudPrestamo.FechSolicitud.ToShortDateString();
            lblEstado.Text = solicitudPrestamo.Estado;
            lblComentario.Text = solicitudPrestamo.Comentario;
            #endregion

        }

        public IQueryable<Prestamo> ObtenerPrestamosPorIdCliente([Control("lblIdCliente")] Int32 idCliente)
        {
            //return PrestamoService.ObtenerPretamosPorIdCliente(idCliente).AsQueryable();
            var prestamos = PrestamoService.ObtenerPretamosPorIdCliente(idCliente).AsQueryable();

            ListPrestamos = prestamos;

            //decimal suma = 0;
            //foreach (var item in prestamos)
            //{
            //    suma += item.Total;
            //    //totalAvaldor = suma;
            //}

            //var lblTotalAvalador = lvPrestamosDelAvalador.FindControl("lblTotalAvalador") as Label;
            //lblTotalAvalador.Text = suma.ToString();

            return prestamos;
        }

        //TODO: Este metodo no debe devolver los prestamos si el cientes es un socio
        public IQueryable<Prestamo> ObtenerSolicitudPrestamoPorIdAvalador(Int32? idAvalador)
        {
            if (idAvalador==null)
            {
                var lblTotalCliente = lvPrestamosDelCliente.FindControl("lblTotalCliente") as Label;
                int a = 0;
                decimal suma = 0;
                foreach (var item in ListPrestamos)
                {
                    a = item.IdAvalador;
                    suma += item.Total;
                    //totalAvaldor = suma;
                }
                
                lblTotalCliente.Text = suma.ToString();
                
                if (a!=Int32.Parse(lblIdCliente.Text))
                {
                    return PrestamoService.ObtenerPretamosPorIdAvalador(a).AsQueryable();
                }
                else
                {
                    return null;
                }
                
            }
            else
            {
                return null;
            }
            
        }



    }
}